package com.junsi.demo.service.impl;

import java.util.List;

import com.junsi.common.annotation.DataSource;
import com.junsi.common.enums.DataSourceType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

import com.junsi.common.core.text.Convert;
import com.junsi.common.enums.DbDialect;
import com.junsi.demo.domain.Demo;
import com.junsi.demo.mapper.DemoMapper;
import com.junsi.demo.service.IDemoService;

/**
 * 测试用例 服务层实现
 * 
 * @author junsi
 * @date 2019-08-17
 */
@Service
public class DemoServiceImpl implements IDemoService 
{
	private Logger logger = LoggerFactory.getLogger(this.getClass());

	@Value("${pagehelper.helperDialect}")
	private String dbDialect;
    
	@Autowired
	private DemoMapper demoMapper;

	/**
     * 查询测试用例信息
     * 
     * @param id 测试用例ID
     * @return 测试用例信息
     */
    @Override
//	@DataSource(value = DataSourceType.MASTER)
	public Demo selectDemoById(Integer id)
	{
	    return demoMapper.selectDemoById(id);
	}

	/**
     * 查询测试用例信息 slave 第二数据库
	 * <br/> 注解加到 service 实现类中
     * @param id 测试用例ID
     * @return 测试用例信息
     */
    @Override
	@DataSource(value = DataSourceType.SLAVE)
	public Demo selectDemoById_slave4Service(Integer id)
	{
	    return demoMapper.selectDemoById(id);
	}

	/**
     * 查询测试用例信息 slave 第二数据库
     * <br/> 注解加到 mapper 接口中
     * @param id 测试用例ID
     * @return 测试用例信息
     */
    @Override
	public Demo selectDemoById_slave4Mapper(Integer id)
	{
	    return demoMapper.selectDemoById_slave(id);
	}

	/**
     * 查询测试用例列表
     * 
     * @param demo 测试用例信息
     * @return 测试用例集合
     */
	@Override
	public List<Demo> selectDemoList(Demo demo)
	{
	    return demoMapper.selectDemoList(demo);
	}
	
    /**
     * 新增测试用例
     * 
     * @param demo 测试用例信息
     * @return 结果
     */
	@Override
	public int insertDemo(Demo demo)
	{
    	if(DbDialect.MYSQL.getCode().equals(dbDialect)) {
    	    return demoMapper.insertDemo(demo);
    	} else if(DbDialect.ORACLE.getCode().equals(dbDialect)) {
    	    return demoMapper.insertDemoOracle(demo);
    	} else {
    		return 0;
    	}
	}
	
	/**
     * 修改测试用例
     * 
     * @param demo 测试用例信息
     * @return 结果
     */
	@Override
	public int updateDemo(Demo demo)
	{
	    return demoMapper.updateDemo(demo);
	}

	/**
     * 删除测试用例对象
     * 
     * @param ids 需要删除的数据ID
     * @return 结果
     */
	@Override
	public int deleteDemoByIds(String ids)
	{
		return demoMapper.deleteDemoByIds(Convert.toStrArray(ids));
	}

}
